[%
<wizard>
	<page>
		<title>Select data type for the keys</title>
		<description>Select data type for the key values of the dictionary</description>
		<variable name="key_datatype"/>
	</page>	
	<page>
		<title>Select data type for the values</title>
		<description>Select data type for the values of the dictionary</description>
		<variable name="value_datatype"/>
	</page>	
</wizard>
%]using System;
using System.Collections;

namespace [%<variable name="namespace"/>%]
{

	public class [%<variable type="standard" name="filenamebase"/>%] : DictionaryBase  
	{
		public [%<variable type="custom" name="value_datatype"/>%] this[ [%<variable type="custom" name="key_datatype"/>%] key ]  
		{
			get  
			{
				return( ([%<variable type="custom" name="value_datatype"/>%]) Dictionary[key] );
			}
			set  
			{
				Dictionary[key] = value;
			}
		}

		public ICollection Keys  
		{
			get  
			{
				return( Dictionary.Keys );
			}
		}

		public ICollection Values  
		{
			get  
			{
				return( Dictionary.Values );
			}
		}

		public void Add( [%<variable type="custom" name="key_datatype"/>%] key, [%<variable type="custom" name="value_datatype"/>%] value )  
		{
			Dictionary.Add( key, value );
		}

		public bool Contains( [%<variable type="custom" name="key_datatype"/>%] key )  
		{
			return( Dictionary.Contains( key ) );
		}

		public void Remove( [%<variable type="custom" name="key_datatype"/>%] key )  
		{
			Dictionary.Remove( key );
		}

	}
}